first steps towards ptx generation
Some checks failed
CI / Julia ${{ matrix.version }} - ${{ matrix.os }} - ${{ matrix.arch }} - ${{ github.event_name }} (x64, ubuntu-latest, 1.10) (push) Has been cancelled
CI / Julia ${{ matrix.version }} - ${{ matrix.os }} - ${{ matrix.arch }} - ${{ github.event_name }} (x64, ubuntu-latest, 1.6) (push) Has been cancelled
CI / Julia ${{ matrix.version }} - ${{ matrix.os }} - ${{ matrix.arch }} - ${{ github.event_name }} (x64, ubuntu-latest, pre) (push) Has been cancelled
Some checks failed
CI / Julia ${{ matrix.version }} - ${{ matrix.os }} - ${{ matrix.arch }} - ${{ github.event_name }} (x64, ubuntu-latest, 1.10) (push) Has been cancelled
CI / Julia ${{ matrix.version }} - ${{ matrix.os }} - ${{ matrix.arch }} - ${{ github.event_name }} (x64, ubuntu-latest, 1.6) (push) Has been cancelled
CI / Julia ${{ matrix.version }} - ${{ matrix.os }} - ${{ matrix.arch }} - ${{ github.event_name }} (x64, ubuntu-latest, pre) (push) Has been cancelled
This commit is contained in:
parent
d60cba7e4d
commit
d875fc7325
|
@ -1,3 +1,6 @@
|
|||
module Transpiler
|
||||
using CUDA
|
||||
using ..ExpressionProcessing
|
||||
|
||||
# culoadtest(N, rand(["add.f32", "sub.f32", "mul.f32", "div.approx.f32"]))
|
||||
function culoadtest(N::Int32, op = "add.f32")
|
||||
|
@ -73,4 +76,47 @@ function culoadtest(N::Int32, op = "add.f32")
|
|||
blocksPerGrid = (N + threadsPerBlock - 1) ÷ threadsPerBlock;
|
||||
|
||||
@time CUDA.@sync cudacall(func, Tuple{CuPtr{Cfloat},CuPtr{Cfloat},CuPtr{Cfloat},Cint}, d_a, d_b, d_c, N; threads=threadsPerBlock, blocks=blocksPerGrid)
|
||||
end
|
||||
end
|
||||
|
||||
function transpile(expression::ExpressionProcessing.PostfixType)
|
||||
|
||||
end
|
||||
|
||||
# TODO: Make version, target and address_size configurable
|
||||
function get_cuda_header()::String
|
||||
return "
|
||||
.version 7.1
|
||||
.target sm_52
|
||||
.address_size 64
|
||||
"
|
||||
end
|
||||
|
||||
function get_kernel_signature(kernelName::String, parameters::Vector{Type})::String
|
||||
signature = ".visible .entry " * kernelName
|
||||
|
||||
stringBuilder = IOBuffer()
|
||||
print(stringBuilder, "(")
|
||||
|
||||
for i in eachindex(parameters)
|
||||
type = type_to_cuda_type(parameters[i])
|
||||
print(stringBuilder,
|
||||
".param ", type, " ", kernelName, "_param_", i, ",")
|
||||
end
|
||||
|
||||
print(stringBuilder, ")")
|
||||
return String(take!(stringBuilder))
|
||||
end
|
||||
|
||||
function type_to_cuda_type(type::Type)::String
|
||||
if type == Int64
|
||||
return ".s64"
|
||||
elseif type == Float64
|
||||
return ".f64"
|
||||
else
|
||||
return ".b64"
|
||||
end
|
||||
end
|
||||
|
||||
|
||||
end
|
||||
|
||||
|
|
Loading…
Reference in New Issue
Block a user