[ Web Proxy ]
URL:
Viewing: https://raw.githubusercontent.com/ZahidSQLDBA/docker-python/main/tests/test_numba.py [Back]  [Original]

import unittest

import numpy as np
from numba import jit, cuda

from common import gpu_test

class TestNumba(unittest.TestCase):
    def test_jit(self):
        x = np.arange(100).reshape(10, 10)

        @jit(nopython=True) # Set "nopython" mode for best performance, equivalent to @njit
        def go_fast(a): # Function is compiled to machine code when called the first time
            trace = 0.0
            for i in range(a.shape[0]):   # Numba likes loops
                trace += np.tanh(a[i, i]) # Numba likes NumPy functions
            return a + trace              # Numba likes NumPy broadcasting

        self.assertEqual(10, go_fast(x).shape[0])

    @gpu_test
    def test_cuda_jit(self):
        x = np.arange(10)

        @cuda.jit
        def increment_by_one(an_array):
            pos = cuda.grid(1)
            if pos < an_array.size:
                an_array[pos] += 1

        threadsperblock = 32
        blockspergrid = (x.size + (threadsperblock - 1))
        self.assertEqual(0, x[0])
        increment_by_one[blockspergrid, threadsperblock](x)
        self.assertEqual(1, x[0])

Web Proxy Viewer  |  New URL  |  Original Page