Skip to content

Instantly share code, notes, and snippets.

View ddemidov's full-sized avatar

Denis Demidov ddemidov

View GitHub Profile
@ddemidov
ddemidov / mv_alt.cpp
Created December 18, 2013 06:20
Two alternatives to vex::multivector
#define VEXCL_SHOW_KERNELS
#define USE_PERMUTATION
#include <vexcl/vexcl.hpp>
int main() {
vex::Context ctx(vex::Filter::Count(1));
const size_t n = 5;
@ddemidov
ddemidov / Makefile
Last active January 1, 2016 01:19
Создание ядер OpenCL
all: cpp-bindings vexcl vexcl-custom-kernel
cpp-bindings: cpp-bindings.cpp
g++ -o $@ $^ -std=c++11 -lOpenCL
vexcl: vexcl.cpp
g++ -o $@ $^ -std=c++11 -I/home/demidov/work/vexcl -lOpenCL -lboost_system
vexcl-custom-kernel: vexcl-custom-kernel.cpp
g++ -o $@ $^ -std=c++11 -I/home/demidov/work/vexcl -lOpenCL -lboost_system
@ddemidov
ddemidov / cl-context.cpp
Created December 22, 2013 06:39
Работа с OpenCL
/*
* Вариант с использованием Kronos C++ bindings.
* Если файл CL/cl.hpp не входит в OpenCL SDK, его можно взять тут:
* http://www.khronos.org/registry/cl/api/1.1/cl.hpp
*
* Преимущество перед C-API:
* не нужно вручную отслеживать время жизни объектов OpenCL.
*/
#include <iostream>
#include <vector>
@ddemidov
ddemidov / Makefile
Last active January 1, 2016 08:59
Poisson in a cube
cube: cube.cpp
g++ -o $@ $^ -std=c++11 -O3 \
-I$(HOME)/work/vexcl -I$(HOME)/work/amgcl \
-lOpenCL -lboost_system
@ddemidov
ddemidov / Makefile
Last active May 29, 2017 19:22
odeint with boost.compute backend
lorenz: lorenz.cpp
g++ -o $@ $^ -std=c++11 -O3 \
-I${HOME}/work/odeint-v2 \
-I${HOME}/work/opencl/compute/include/ \
-lOpenCL -lboost_system -lboost_timer
#include <vexcl/vexcl.hpp>
vex::vector<cl_float2>
hilbert(vex::vector<float> &in, std::size_t rows, std::size_t cols) {
// No need to pass context in:
const auto &ctx = in.queue_list();
// Use function instead of vector. Should save global memory IO.
VEX_FUNCTION(h, float(size_t/*prm1 = idx*/, size_t/*prm2 = rows*/),
VEX_STRINGIZE_SOURCE(
@ddemidov
ddemidov / compiler_bug.cpp
Last active January 4, 2016 21:29
MacOSX OpenCL problems
#include <iostream>
#include <vector>
#include <string>
#include <stdexcept>
#define __CL_ENABLE_EXCEPTIONS
#include <CL/cl.hpp>
//---------------------------------------------------------------------------
void precondition(bool cond, const std::string &msg) {
@ddemidov
ddemidov / hello.cpp
Last active August 29, 2015 13:55 — forked from sebsjoberg/hello.cpp
#include <vexcl/vexcl.hpp>
vex::vector<cl_float2>
hilbert(vex::vector<float> &in, std::size_t rows, std::size_t cols) {
// No need to pass context in:
const auto &ctx = in.queue_list();
// Use function instead of vector. Should save global memory IO.
VEX_FUNCTION(h, float(size_t/*prm1 = idx*/, size_t/*prm2 = rows*/),
VEX_STRINGIZE_SOURCE(
@ddemidov
ddemidov / vexcl_sort.cpp
Last active August 29, 2015 13:56
Example project for VS2012
#include <vector>
#include <algorithm>
#include <cstdlib>
#include <vexcl/vexcl.hpp>
typedef cl_uint val_type;
int main() {
const size_t n = 1024;
#include <vexcl/vexcl.hpp>
typedef int val_type;
typedef vex::cl_vector_of<val_type, 2>::type Tuple;
struct less {
typedef bool result_type;
VEX_FUNCTION(device, bool(Tuple, Tuple),
"return (prm1.x == prm2.x) ? (prm1.y < prm2.y) : (prm1.x < prm2.x);"