Post Project
  • Search
    • Buyers can
    • Search offers to buy now
    • Search freelancers to request a proposal
    • Freelancers can
    • Search projects to quote on
  • How it works
  • Log in
  • Sign up
  • Freelancer?
Browse by Category
    Technology & ProgrammingWriting & TranslationDesignDigital MarketingVideo, Photo & ImageBusinessMusic & AudioMarketing, Branding & SalesSocial Media

    Converting Matlab code into CUDA C++ implementation.

    - or -

    Post a project like this
    12/09/2016
    £500(approx. $611)
    • Posted: 7 years ago
    • Proposals: 4
    • Remote
    • #1249592
    • Expired
    Amar S.Kevin C.Kenroy B.Abhinav M. have already sent a proposal.
    • 1
    • 1

    Description

    Experience Level: Expert
    Estimated project duration: 1 - 2 weeks
    General information for the business: personal code project
    Kind of development: Customization of existing program
    Num. of modules: 1
    Description of every module: I have a code that I wrote in Matlab and I am looking to convert it to C/C++ Cuda to be run faster on a GPU. The code is sequential and the main processing operation in the code is a 2D FFT of 2D images. The current Matlab code is very slow even with the parallel computing option being enabled.
    Description of requirements/functionality: The main target is to reach a high speed up (say 700X and above) when running on a GPU. Such speed up is possible with normal CUDA code as this problem is a simple image processing with few sequential steps (i.e. embarrassingly parallel). I already have the Cuda implementation of some of the computationally expensive processes, and I got speed increases of 200x and 700x on a high-end workstation graphics card (NVIDIA Tesla K40c with 2880 cores). I need an optimized version of my algorithm, possibly using cuFFT?.

    More information about the Matlab code:
    The current Matlab code is highly modular and well written. The input date is a Mat file that contains a 4D matrix of 2D images. It also contains other parameters that are needed for processing. This data is processed sequentially to generate the required intermediate data for the last two main computationally expensive operations(FT_MtoG and SSBR ). The first one (FT_MtoG) is simply a Fourier transform to generate the 4D matrix (G) that is needed for the last operation (SSBR) which is a Stencil Operations to generate a single image for the G matrix.
    Main requirement:
    1. Achieve a very high GPU speed up (700x minimum for both the last two main operations FT_MtoG and SSBR ).
    2. Output date should be stored in HDF5 file format.
    3. embedding the code in a GUI
    You need to be professional in C++ and GPGPU parallel APIs as CUDA .
    Required libraries
    HDF5 - https://www.hdfgroup.org/HDF5/
    cuFFT - https://developer.nvidia.com/cufft
    Specific technologies required: c++ , Cuda, GPU, Matlab
    OS requirements: Windows, Linux
    Extra notes: Proposed milestones:

    Stage 1: read Data from Matlab format (.mat) in to C/C++ and providing the CUDA c++ code for the intermediate operations.
    The data are stored in Mat Version 7.3 format which is an HDF5 format.
    You need to read and load all data from this file into C++ and then stored after processing as HDF5 format. This can be done using Matlab C++ APIs. I am flexible about this-this, if Matlab API is problematic, another option is acceptable such as converting the Mat file to another format via scripting or even converting it into HDF5 to read it. The generated code should be not customised for this particular data, it should work on similar data with higher sizes (ideally image size 256^4).
    They are mainly some sequential operations for visualisation. Mostly they are stencil operations that are highly similar. The visualisation library is left to your preference.

    Stage 2: c++ Cuda generation of FT_MtoG module
    This function is a very simple faction and is just an FFT of 2D images looping the 4D matrix (two nested loops). I already have the Cuda implementation, however, this need to be further optimised using the cuFFT library.

    Stage 3: c++ Cuda generation of SSBR module
    This module is just a Stencil operation. And is more computationally expensive than the previous one? Therefore optimisation is highly required.

    Stage 4: saving data as an HDF5 format.
    Since the data can be a large dataset (4D matrix can be several gigabytes), it is important to store it in a format that is optimised for such data size. Therefore the HDF5 format Is needed.

    Stage 5: embedding the code in a GUI
    Create a simple and easy to use GUI so that I can load the files and see the results without the need to run the code via prompt command.

    Alan A.
    Alan A.
    0% (0)
    Projects Completed
    -
    Freelancers worked with
    -
    Projects awarded
    0%
    Last project
    27 Mar 2023
    United Kingdom

    New Proposal

    Login to your account and send a proposal now to get this project.

    Log in

    Clarification Board Ask a Question

    • 23 Aug 2016Amar S.

      is this job still open to be awarded?

    118825
    12/09/2016
    £500(approx. $611)

    - or -

    Post a project like this
    Alan A.
    Alan A.
    0% (0)
    Projects Completed
    -
    Freelancers worked with
    -
    Projects awarded
    0%
    Last project
    27 Mar 2023
    United Kingdom

    Related project Searches


    linux 4d algorithm development application programming interface (API) C++ programming language CUDA programming language customization data processing graphical user interface (GUI) MATLAB programming language microsoft windows nvidia operating system (os) image processing

    Product

    • About
    • Team
    • Careers

    Support

    • How it works
    • Trust & Safety
    • Help Centre

    Discover

    • GuidesStoriesNews

    Resources

    • Customer Stories
    • Business Cost Calculator
    • Startup Cities

    Browse

    • Freelance Services
    • Freelance Services By Country
    • Freelance Skills
    • Terms
    • Privacy
    • Sitemap
    • Company Details
    • © 2023 People Per Hour Ltd
    We collect cookies to enable the proper functioning and security of our website, and to enhance your experience. By clicking on 'Accept All Cookies', you consent to the use of these cookies. You can change your 'Cookies Settings' at any time. For more information, please read ourCookie Policy
    Cookie Settings
    Accept All Cookies