Giter Site home page Giter Site logo

hahnjo / cgxx Goto Github PK

View Code? Open in Web Editor NEW
3.0 4.0 1.0 209 KB

Object-Oriented Implementation of the Conjugate Gradients Method

License: GNU General Public License v3.0

C++ 42.54% CMake 2.90% Cuda 11.03% C 43.53%
hpc cg openmp openacc opencl cuda

cgxx's Introduction

CGxx - Object-Oriented Implementation of the Conjugate Gradients Method

This implementation can make use of different programming models:

  • CUDA
  • OpenACC
  • OpenCL
  • OpenMP

If applicable, the offloading programming model also includes a version for multiple devices. In addition, there is a serial implementation for reference.

Usage

The resulting binaries can be started from command line: <binary> <matrix.mtx> [<repetitions>]

Environment variables

Name Description Allowed values Default value
CG_MAX_ITER Maximum number of iterations integer greater than zero 1000
CG_TOLERANCE Tolerance for convergence number greater than zero 1e-9
CG_CHECK_TOLERANCE Tolerance for checking the solution number greater than zero 1e-5
CG_MATRIX_FORMAT Matrix format to use in computation COO, CRS, ELL depends on programming model
CG_PRECONDITIONER Preconditioner to use none, jacobi depends on programming model
CG_WORK_DISTRIBUTION Way of distributing work to multiple devices row, nz row
CG_OVERLAPPED_GATHER Whether to overlap computation and communication for multiple devices 0 = disabled depends on programming model
CG_CUDA_GATHER_IMPL Implementation to use for gathering in matvec kernel host, device, p2p, unified host
CG_OCL_PARALLEL_TRANSFER_TO Whether to transfer the data to the device in parallel 0 = disabled enabled
CG_OCL_GATHER_IMPL Implementation to use for gathering in matvec kernel host, device host

License

The code is released under the GNU General Public License v3:

Copyright (C) 2017  Jonas Hahnfeld

This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.

This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
GNU General Public License for more details.

You should have received a copy of the GNU General Public License
along with this program.  If not, see <http://www.gnu.org/licenses/>.

Individual files contain the following tag instead of the full license text.

SPDX-License-Identifier:	GPL-3.0-or-later

This enables machine processing of license information based on the SPDX License Identifiers that are here available: http://spdx.org/licenses/

cgxx's People

Contributors

hahnjo avatar

Stargazers

 avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar

Forkers

dengxu

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.